package servlets;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import beans.Curso;
import dao.interfaces.CursoDAO;
import factory.Factory;

/**
 * Servlet implementation class SMantCurso
 */
@WebServlet("/SMantCurso")
public class SMantCurso extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String accion = request.getParameter("accion");

		if (accion != null) {
			if (accion.equals("Listar")) {
				Listar(request, response);
			}else if (accion.equals("ListarxFiltro")) {
				ListarxFiltro(request, response);
			}
			else if (accion.equals("RegistrarCurso")) {
				String nombre = request.getParameter("nombcur");
				String desc = request.getParameter("desc");
				String area = request.getParameter("area");
				String estado = request.getParameter("estado");
				if (nombre!=null&&desc!=null&&area!=null) {
					
					
					Factory f = Factory.obtenerTipo(Factory.MySql);
					CursoDAO cdao = f.obtenerCursoDAO();
					String cod = cdao.BuscarCurso();
					
					Curso c = new Curso(cod, nombre, desc, area, Integer.parseInt(estado));
					cdao.RegistrarCurso(c);
					Listar(request, response);
				}
			}else if (accion.equals("ActualizarCurso")) {
				String codigo = request.getParameter("codicur");
				String nombre = request.getParameter("nombcur");
				String desc = request.getParameter("desc");
				String area = request.getParameter("area");
				String estado = request.getParameter("estado");
				if (codigo!=null&&nombre!=null&&desc!=null&&area!=null) {
					
					
					Factory f = Factory.obtenerTipo(Factory.MySql);
					CursoDAO cdao = f.obtenerCursoDAO();
					
					Curso c = new Curso(codigo, nombre, desc, area, Integer.parseInt(estado));
					cdao.ActualizarCurso(c);
					Listar(request, response);
				}
			}else if (accion.equals("EliminarCurso")) {
				String codigo = request.getParameter("codicur");
				System.out.println("codigo "+codigo);
				if (codigo!=null) {
					
					
					Factory f = Factory.obtenerTipo(Factory.MySql);
					CursoDAO cdao = f.obtenerCursoDAO();
					System.out.println("codigo "+codigo);
					cdao.EliminarCurso(codigo);
					Listar(request, response);
				}
			}
			
		}

	}

	protected void Listar(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		Factory f = Factory.obtenerTipo(Factory.MySql);
		CursoDAO cdao = f.obtenerCursoDAO();

		List<Curso> lista = cdao.ListarCurso();
		HttpSession session = request.getSession();
		session.setAttribute("listaCurso", lista);
		request.getRequestDispatcher("tbcur.jsp").forward(request, response);

	}

	protected void ListarxFiltro(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println("Listando por filtro");
		
		String codigo = request.getParameter("codicur");
		String nombre = request.getParameter("nombcur");
		String estado = request.getParameter("estado");
		System.out.println("codigo "+codigo+"\n nombre "+nombre+"\n Estado "+estado);

		Factory f = Factory.obtenerTipo(Factory.MySql);
		CursoDAO cdao = f.obtenerCursoDAO();
		List<Curso> lista = cdao.ListarCursoFiltro(codigo, nombre,estado);
		HttpSession session = request.getSession();
		session.setAttribute("listaCurso", lista);
		request.getRequestDispatcher("tbcur.jsp").forward(request, response);
	}
	
	protected void ListarxFiltroBuscar(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println("Listando por filtro");
		
		String codigo = request.getParameter("codicur");
		String nombre = request.getParameter("nombcur");
		String estado = request.getParameter("estado");
		System.out.println("codigo "+codigo+"\n nombre "+nombre+"\n Estado "+estado);

		Factory f = Factory.obtenerTipo(Factory.MySql);
		CursoDAO cdao = f.obtenerCursoDAO();
		List<Curso> lista = cdao.ListarCursoFiltro(codigo, nombre,estado);
		HttpSession session = request.getSession();
		session.setAttribute("listaCurso", lista);
		request.getRequestDispatcher("frm_buscar_curso.jsp").forward(request, response);
	}

}
